Command sequencing and interlocks for a remotely programmable implantable device

ABSTRACT

Methods of providing a digital program request formatted by a remotely-located server are provided. In one embodiment, the method includes the steps of providing an identifier associated with an implantable medical device (IMD) to the remotely-located server to acquire the digital program request intended for the IMD, and validating the digital program request using a digital identification code uniquely identifying the server. In response to successful validation of the digital program request, the program request is added to a storage queue for subsequent wireless transmission to the IMD. A sequential code contained within the digital program request is compared to a second sequential code earlier processed by the IMD to verify that the digital program request is not processed out-of-order. The results of the validating step are stored in a notification queue for subsequent transmittal to the server.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a division of U.S. application Ser. No. 11/187,352 filed Jul.20, 2005, which claims priority of U.S. Provisional Patent ApplicationSer. No. 60/590,023, filed Jul. 20, 2004; both of which are incorporatedherein by reference.

TECHNICAL FIELD

The present invention is directed generally to components, systems andmethods for remotely programming implantable medical devices (IMD) suchas pacemakers, neuro-stimulation devices, drug pumps and/or the like.

BACKGROUND

Pacemakers, neuro-stimulation devices, drug pumps and other implantablemedical devices (IMDs) are becoming increasingly common, particularly asthe population ages. As the name implies, these devices are surgicallyor otherwise implanted within a patient to provide monitoring and/ortherapy for cardiac, neurological and/or other conditions. Aconventional pacemaker, for example, is a battery-powered device thatapplies electrical impulses to a patient's heart to stimulatecontractions or “beats”. Neurostimulation devices similarly applyelectrical impulses to various regions of the spinal cord or otherneurologically sensitive regions to alleviate pain or to produce otherbeneficial effects in the patient. Other IMD therapies includeintrathecal drug delivery provided by so-called “drug pumps” thatdeliver medication (morphine or baclofen, for example) through acatheter directly to an appropriate area, such as the area around thespinal cord. Because the medication is delivered directly to theappropriate region of the patient's body, the patient's symptoms cantypically be controlled with a much smaller dose than would otherwise beprescribed with oral medication. Other types of implantable devicesinclude defibrillators, various types of monitors, and the like.

As medical and computing technologies have progressed, IMDs have becomecapable of applying increasingly sophisticated and elaborate therapies,and of obtaining increasingly detailed information about the patient.IMD therapies can often be uniquely tailored to the particular needs ofthe patient, provided that adequate information is available while thedevice is being programmed. If the patient is present within a hospitalor a physician's office, for example, adjusting the patient's therapy isa relatively straightforward process of adjusting device parameters(e.g. pacing parameters, drug dosage, etc.) in the IMD with aconventional device programmer. If the patient is not physically presentat a treating facility with a suitable device programmer, however,adjustments to IMD programming can be a significant inconvenience. Somepatients may need to travel significant distances, for example, and/ormay need to appear at the treating facility on a frequent basis untilproper parameters are programmed in the device. These trips to thetreating facility are inconvenient to both the patient and to thecaregiver. Although various systems exist for providing some remoteprogramming functionality (see, for example, commonly assigned UnitedStates Patent Publication No. 2002/0123673, which is incorporated hereinby reference), it is nevertheless desirable to improve the flexibility,accessibility, security and functionality of such systems.

It is therefore desirable to create systems and techniques capable ofproviding convenient programming updates to implanted medical deviceswithout requiring the patient to be physically present at the samelocation as the caregiver that is programming the device. Moreover, itis desirable to create a technique for improving information provided tocaregivers without significant effort by the patient. Furthermore, otherdesirable features and characteristics will become apparent from thesubsequent detailed description and the appended claims, taken inconjunction with the accompanying drawings and this background section.

BRIEF DESCRIPTION

Methods of providing a digital program request formatted by aremotely-located server are provided. In one embodiment, the methodincludes the steps of providing an identifier associated with animplantable medical device (IMD) to the remotely-located server toacquire the digital program request intended for the IMD, and validatingthe digital program request using a digital identification code uniquelyidentifying the server. In response to successful validation of thedigital program request, the program request is added to a storage queuefor subsequent wireless transmission to the IMD. A sequential codecontained within the digital program request is compared to a secondsequential code earlier processed by the IMD to verify that the digitalprogram request is not processed out-of-order. The results of thevalidating step are stored in a notification queue for subsequenttransmittal to the server.

Remote monitoring devices are further provided for facilitatingcommunication between a server and an implantable medical device (IMD)having an identifier associated therewith. In one embodiment, the remotemonitoring device includes a wireless interface configured tocommunicate with the IMD, a network interface configured to communicatewith the server, and a processor configured to execute a softwareapplication. The software application is adapted to: (i) obtain theidentifier from the IMD via the wireless interface, (ii) provide theidentifier to the server via the network interface to acquire thedigital program request intended for the IMD, (iii) validate a digitalidentification code uniquely identifying the server contained within thedigital program request, (iv) add the validated program request to astorage queue associated with the IMD for subsequent wirelesstransmission to the IMD via the wireless interface, and (v) storeresponses to the server in a notification queue for subsequenttransmittal to the server via the network interface.

In still other embodiments, digital storage devices and/or systemsincorporate similar concepts. These and other exemplary embodiments aredescribed in additional detail below.

BRIEF DESCRIPTION OF DRAWINGS

Various exemplary embodiments will hereinafter be described inconjunction with the following drawing figures, wherein like numeralsdenote like elements, and:

FIG. 1 is a block diagram showing an exemplary system for remotelyprogramming an implantable medical device;

FIG. 2 is a simplified data-flow diagram showing exemplary interactionsbetween a browser, a server, a monitor and a medical device;

FIG. 3 is a flowchart of an exemplary process for transferringprogramming requests from a server to a remote monitor; and

FIG. 4 is a flowchart of an exemplary process for transferringprogramming requests from a remote monitor to a medical device.

DETAILED DESCRIPTION

The following detailed description is exemplary in nature and is notintended to limit the invention or the application and uses of theinvention. Furthermore, there is no intention to be bound by any theorypresented in the preceding background of the invention or the followingdetailed description of the drawings.

According to various exemplary embodiments, a physician or other medicalcaregiver is able to remotely yet securely program a medical deviceimplanted in a patient from the convenience of a standard browserapplication. After authenticating to a network server, the caregiverreceives information about the patient's device, and is able to modifydevice parameters (such as drug dosage or intervals, pacing parameters,and/or the like) within a conventional browser interface. The serverreceives the instructions from the caregiver in a secure manner, andformulates a digital program request that includes a digital codeuniquely identifying the server. The server may also include anidentifier for the IMD and/or a sequentially-generated number within theprogram request to ensure the integrity and security of the request. Theprogram request is transferred to a remote monitor that wirelesslycommunicates with the patient's IMD. By leveraging the accessibility andconvenience of the server on the digital network, the patient andcaregiver are no longer required to be physically present at the samelocation or available at the same time. To the contrary, the patientneed only have access to a remote monitor, which may be provided in thepatient's home or office, or at another convenient location. Moreover,the server remains in contact with the IMD (via the remote monitor) onat least an intermittent basis in various embodiments, thereby allowingthe caregiver to obtain data about the patient's device withoutrequiring travel or other significant effort by the patient. Inaddition, various techniques and systems shown herein could beequivalently used in “real time” or near real-time embodiments in whicha caregiver uses an online server to program a patient's IMD even thoughthe patient may be physically present at the same location as thecaregiver and/or available for immediate receipt of the new IMDprogramming. Such embodiments allow the caregiver to program the IMDwithout having a specialized programmer for the particular IMD, and mayadditionally provide further conveniences such as centralized datamonitoring, a familiar interface, immediate access to the latestprogramming techniques and software, and/or the like.

Turning now to the drawing figures and with initial reference to FIG. 1,an exemplary system 100 for remotely programming one or more implantablemedical devices 122A-C suitably includes a server 102 communicating withany number of remote monitor devices (IRMs) 120A-C and/or any number ofcaregiver terminals 116 via network 114. Caregivers suitably interactwith server 102 via a browser application 117 executing on terminal 116.After authenticating with server 102, caregivers are able to receiveinformation regarding one or more devices 122A-E, and are able toprovide instructions for modifying the programming of devices 122A-Eusing browser 117. Server 102 appropriately verifies that theinstructions provided are safe and consistent with prior instructions,and then formulates a digital program request message that can betransmitted to one or more remote monitors 120A-C for eventual deliveryto devices 122A-E. Similarly, information from devices 122A-E may bemanually or automatically collected by remote modules 120A-C andforwarded to server 102 for subsequent retrieval by the caregiver, ifappropriate.

Network 114 is any communications medium or media capable of providingdigital communications between server 102, browser 117 and/or remotemonitors 120A-C. In various embodiments, network 114 incorporates thepublic Internet, although network 114 may equivalently represent anypublic or private network, including any local area or other networkoperating within a medical facility. Although FIG. 1 shows network 114as a single conceptual “cloud”, in practice server 102 need notcommunicate with both browser 117 and remote modules 120A-C via the samephysical network. Remote monitors 120A-C and/or terminal 116 mayphysically connect to network 114 via any type of voice and/or dataconnections, for example, and network 114 may incorporate any number ofdial-up, broadband, fiber optic, wireless, satellite and/or other datalinks in a wide array of alternate embodiments.

The physician, nurse or other caregiver accesses server 102 via anyterminal 116 having access to server 102 via network 114. Terminal 116is any personal computer, portable computing device, workstation, kiosk,personal digital assistant, wireless telephone or other computing devicecapable of interacting with server 102 via a browser application 117.Browser 117 is any type of conventional browser such as the InternetExplorer browser application available from Microsoft Corporation ofRedmond, Washington, any of the various MOZILLA-based browsers readilyavailable on the Internet, or the like. In various embodiments, terminal116 includes an optional input device 118 for receiving biometric orother security-related information from the caregiver, althoughbiometric information need not be present in every embodiment.

Server 102 is any host accessible via network 114 that is capable ofsecurely receiving and processing programming instructions for IMDs122A-E. In various embodiments, server 102 is physically implemented ina data center environment, with one or more server computers configuredwith appropriate routing, backup, environmental control and othersupport resources, as well as suitable physical access control toprevent unauthorized persons from gaining access to sensitive data.Although server 102 could be alternatively implemented with a singlecomputing host, block 102 in FIG. 1 is intended as a logicalrepresentation that shows functions and features that may be carried outby any number of actual computers.

Server 102 suitably includes a server application 105 that interoperateswith any number of modules 106, 108, 110 for such tasks as processingsecurity data, verifying device information, managing data in database112, and/or other tasks as appropriate. Application 105 may be writtenin any programming or scripting language, such as the .NET frameworkavailable from Microsoft Corp, the JAVA framework available from SunMicrosystems, or the like. Application 105 and modules 106, 108, 110need not be implemented with separate applications, but may ratherincorporate any libraries, object classes, data structures, programmingroutines or other components capable of providing the describedfunctions. Data management module 110, for example, may be any type ofdatabase management program capable of accessing and managing datastored within database 112. Application 105 and modules 106, 108, 110may be stored in source and/or object code form on any disk drive,memory or other digital storage medium associated with one or morecomputing hosts within server 102. Particular features of application105 and its associated modules are described more fully below.

Server 102 also provides a suitable user interface 104 to browser 117,such as any hypertext markup language (HTML), extensible markup language(XML), cascading style sheet (CSS), active server pages (ASP) and/or thelike. The appearance of the particular interfaces 104 provided by server102 vary widely from embodiment to embodiment, but typically incorporateconventional web constructs and structures to provide information and toreceive inputs from the user in a convenient format that is readilyaccessible from a variety of terminals 116.

Server 102 is capable of communicating with any number of remotemonitors 122A-C. Although remote monitors 122A-C are commonly referredto as “in-home remote monitors” or simply “IRMs”, it is not necessarythat the IRMs be actually located in a home. To the contrary, IRMs maybe located in homes, offices, nursing homes, hospitals, places ofbusiness, retail stores, restaurants, airports, bus terminals,libraries, clinics and/or any other locations for public and/or privateuse. Using various techniques described herein, each IRM 120A-C may beable to provide inter-communication between server 102 and any number ofimplanted devices 122A-E. Conversely, patients may be able to updatetheir IMDs 122A-E using any IRM 120A-C operating within system 100 thatis recognized by server 102, subject to access control rules,permissions, and the like.

IRMs 120A-C may be implemented with any personal computers, personaldigital assistants or other computing devices. FIG. 1 shows IRM 120Awith additional detail not reproduced for IRMs 120B-C, but similarmodules and features discussed with regard to IRM 120A would typicallybe present within other IRMs 120B-C as well. In various embodiments,IRMs 120A-C each contain a network interface 124 to network 114, awireless interface 133 to one or more IMDs 122A-E and a softwareapplication 125 stored in any disk drive, memory or other digitalstorage medium associated with the IRM. Application 125 suitablyincludes any number of modules 130, 132 capable of parsing data messagesreceived from server 102 and/or of verifying security constructsincorporated within received program requests. Data parsing module 130,for example, may be a module specially intended to parse messages in aparticular format (e.g. XML or SOAP) used to exchange informationbetween IRMs 120A-C and server 102. Similarly, security module 130 maybe a library or other construct used in decrypting digital signaturescontained within program requests, or the like. In various embodiments,application 125 also incorporates two or more logical queues 126, 128for storing notifications provided to server 102 and program requestsprovided to an IRM 122A-E, as described more fully below. Each queue126, 128 may be implemented with any type of stack, tree, array, list orother conventional data structure. In various embodiments, IRM 120interoperates with multiple IMDs 122A-E, and therefore maintains aseparate device queue 128 for each of these devices. Alternatively, eachIRM 120 may be associated with only one IMD 128 at a time, therebyallowing a single device queue 128 to suffice in many embodiments.

System 100 allows caregivers to securely receive information about apatient's IMD 122, to modify one or more parameters of device 122, andto safely provide the caregiver's instructions to IMD 122 via IRM 120.With reference now to FIG. 2, an exemplary process 200 for providingprogramming instructions from a caregiver's browser 117 to an IMD 122suitably includes the broad steps of providing IMD data to server 102(steps 202, 204), establishing a secure connection with browser 117(steps 206, 208, 212, 214), processing the instructions at server 102 tocreate a program request (steps 214, 216) that can be provided to IRM122 (steps 218, 220, 220), and providing results back to server 102and/or browser 117 (steps 224, 226, 228). The particular process shownin FIG. 2 is intended as exemplary only. In practice, the various stepsshown in the figure may be executed in any temporal order, and/orvarious steps may be combined, supplemented or eliminated asappropriate.

IMDs 122 are associated with one or more IRMs 120 in any manner. Invarious embodiments, a caregiver or other administrator assigns the IMD122 to one or more eligible IRMs 120 by creating an association indatabase 112 that is verified on server 102 before program requests areprovided (e.g. in step 214). Alternatively, a patient is able toassociate his or her IMD 122 with any available IRM 120 by simply usingthe IRM 120 to perform a status update (step 202). The patient simplyplaces the IRM 120 within wireless range of device 122, and thenmanually or automatically activates the IRM. IRM 120 suitablycommunicates with IMD 120 via an infrared, radio frequency or otherwireless link to obtain identifying information about IMD 120. Suchinformation may include any identifier that uniquely identifies theparticular IMD 122 present at IRM 120. Examples of identifiers availablefrom different types of IMDs 122 include serial numbers, alphanumericstrings, cryptography keys, digital codes and/or the like. For devicesthat do not include such numbers (or that have serial numbers that areeasily modified or reset), a conventional handshaking technique can beused to identify the particular IMD 120. Other embodiments couldequivalently identify IMD 122 using an identifier code from an IRM 122that is associated with a particular IMD in database 112 or elsewherewithin server 102.

IRM 120 also obtains status information about IMD 122 (e.g. batterypower, type of drug present, drug concentration, a sequential numberassociated with a last program request, and/or any other information).This status information, along with the identifying information aboutIMD 122, can be transmitted to server 102 across any medium (step 204).Data transferred between server 102 and IRM 120 may be formatted in anymanner, using any standard or non-standard data formatting conventions.Messages may be formatted in XML and/or SOAP format, for example. Invarious embodiments, IRM 120 and server 102 communicate across a secureconnection such as a virtual private network (VPN), secure sockets layer(SSL) connection, or the like to prevent unauthorized parties fromintercepting or observing data packets sent between IMD 1220 and server102. Again, IRM 120 may associate itself with one or more IMDs 122 inany manner, and may share this association with server 102 asappropriate. Server 102 suitably stores status information in database112 for subsequent retrieval.

As noted above, caregivers or other authorized persons communicate withserver 102 via a conventional browser program 107 (step 206). In anexemplary interaction, browser 107 establishes a secure data connectionwith server 102 using VPL/SSL techniques or the like, and requestsaccess to system 100 (step 206). As part of the access request, browser107 suitably provides a digital credential to verify that the caregiverusing browser 107 is authorized to gain access to system 100. Thedigital credential may be a simple user ID/password pair, or may involvestronger authentication such as a digital signature, a biometricidentifier (e.g. a voice or finger print, retinal scan, etc.), or anidentifier obtained from a digital token (e.g. a physical device in thepossession of an approved user that provides a digital code or otherinformation that can be used to authenticate the user). Server 102processes the access request to authenticate the caregiver (step 208),and grants appropriate access to the caregiver if authentication issuccessful. Access provided to each authorized user of system 102 may beadministered in any manner. In an exemplary embodiment, a rules-basedaccess system is based upon access privileges stored in database 112 foreach user. Privileges may be assigned by patient, by IMD 122, by IRM120, and/or in any other appropriate manner. In various embodiments,browser 117 also authenticates server 102 using cryptographic techniquesor the like to ensure that data provided by server 102 is legitimate.Authentication may involve the use of a public key associated withserver 102, for example, which can be verified using conventionalvirtual private network (VPN) techniques, secure sockets layer (SSL)encryption, or the like.

Upon successfully authenticating with server 102, the caregiver gainsaccess to authorized information in database 112 (step 210). Thisinformation may be retrieved (e.g. through any set of queries posited bydata module 110 to database 112 in response to requests generated bybrowser 107) and presented to the caregiver in any manner. Caregiversmay request a list of authorized patients, for example, or may requestinformation associated with a particular patient or device, or may viewrecent program requests for all patients, or the like. When possible,server 102 provides current operating parameter information (e.g.current drug, current dosage, current drug concentration, pacingparameters, etc.) to browser 107 to assist the caregiver in evaluatingthe patient. Additionally, various embodiments of server 102 may providemore advanced information based upon data obtained from the IMD 122and/or computed in conjunction with IRM 120, as described more fullybelow. Such information may contain indications of unusual behaviorsobserved by the device, for example, or may include computed values suchas daily maximal doses computed based upon drug concentrations presentin the device, estimated time to reservoir empty, and/or otherparameters as appropriate.

If the caregiver wishes to issue instructions for a change in one ormore device parameters, such instructions are provided from browser 107to server 102 (step 212). The received instructions may be verified orotherwise evaluated at server 102 (e.g. by module 108) to ensure thatthe instructions are consistent with the current status of IMD 122and/or that no safety parameters (e.g. recommended dosages, etc.)maintained in database 112 are exceeded.

After verifying the new programming instructions received from thecaregiver, server 102 suitably formats a digital program request thatcan be provided to the IRM 120 associated with the IMD 122 of interest.The program request may be formatted in any manner (e.g. simple objectaccess protocol (SOAP), conventional XML and/or the like) that can beinterpreted by IRM 120. Additionally, server 102 digitally signs orotherwise places a unique digital identifier in the program request toprevent rogue parties from emulating server 102 (step 216).Additionally, server 102 may provide a sequential or other uniquetransaction identifier number in the program request to prevent IMD 122from processing programming requests out of order, and to prevent replayattacks wherein legitimate data packets are duplicated andre-transmitted to the recipient after the intended time. The resultingdigitally-signed (or otherwise protected) program request is then storedin a queue for subsequent transmittal to the IRM 120 associated with theparticular IMD 122.

Transfer of the program request to IRM 120 is handled in any manner(step 218). In various embodiments, each IRM 120 polls server 102 at aregular or irregular interval to receive any updates queued since thelast poll. Alternatively, server 102 generates a notification message toIRM 120 and/or to the patient (e.g. an email) that a new program requestis waiting on the server. In still other embodiments, updates remainqueued until IRM 120 attempts to connect to server 102 for any purpose.As mentioned above, the connection between server 102 and IRM 120 may beany secure or unsecure connection (e.g. VPN/RSS) as appropriate. IRM 120suitably verifies the digital information code contained within eachprogram request prior to actually programming IMD 122 to further ensurethat the program request is legitimate and from a trusted source (step220). This digital credential may be a digital signature generated witha private key associated with server 102, for example, that allows IMD122 to de-crypt the signature using server 102's public key, therebyverifying the authenticity of the message. In various embodiments,server 102 also authenticates IRM 120 before transferring the programrequests to ensure that IRM 120 is a legitimate data recipient. Suchauthentication may involve using digital signatures, private codes orother identification information about IRM 120 as appropriate. Theverified program request is then applied to IMD 122 (step 222), and anystatus reports may be provided from IMD 122 to IRM 120, server 102and/or browser 107. IRM 120 and IRM 122 may additionally authenticate toeach other using private codes, digital signatures or other techniquesto further enhance the security of process 200, although this is notrequired in all embodiments.

By using various cryptographic and other security techniques, thereliability of program requests and other data can be maintained even inenvironments that incorporate public networks. To reiterate, variousembodiments authenticate the caregiver to server 102 using passwords,tokens, biometrics, digital signatures or other techniques to ensurethat the caregiver is truly authorized to obtain data and/or issueprogram requests. The caregiver's browser may optionally authenticateserver 102 using VPN/SSL or other techniques to ensure that receivedinformation is reliable and not visible to other parties on network 114.IRM 122 ensures that data received from server 102 is signed orotherwise protected with digital signatures or other techniques beforethe program is applied to IMD 122, and may also receive sensitive dataover secure links (e.g. connections protected with VPN, SSL or othersecurity). Further, various embodiments allow server 102, IRM 120 and/orIMD 122 to additionally authenticate to each other using any type ofsignatures, codes or the like to further enhance the level of securityand reliability within system 200. Additional security, data integrityand/or other data checks may also be contained within variousembodiments. Further detail about exemplary data exchange processes 300,400 executed within various embodiments of IRM 120 are shown in FIGS. 3and 4. Each of these processes may be implemented with any type ofcomputer-executable instructions stored in any digital storage medium(e.g. disk drive, flash or other memory) and executed by any processorresiding within IRM 120.

With reference now to FIG. 3, an exemplary process 300 for retrievingprogram requests from server 102 to IRM 120 suitably includes the broadsteps of establishing a connection to server 102 (step 302), sending anyqueued notifications to server 102 (step 304), verifying the digitalsecurity information contained within the program request (steps 308,310), placing messages into the appropriate queues for subsequent action(steps 312, 314) and processing any cancellation messages (step 316).

As noted above, the connection to the server 102 (step 302) may beestablished in response to a patient instruction, an interaction withIMD 122), or may be established at regular or irregular intervals. Invarious embodiments, the patient or other user places IRM 120 in acradle and depresses a button to establish a telephone, wired orwireless connection to network 104, which in turn provides access toserver 102. If notification queue 126 (FIG. 1) has notifications, theseare generally delivered at the outset of the connection (althoughalternate embodiments could deliver notifications at the end of theconnection, in a separate connection, and/or at any other point intime). These notifications include responses to status requests receivedfrom server 102, as well as any patient-initiated status updates.

In various embodiments, IRM 120 provides the digital identificationnumber (e.g. serial number) of the associated IMD 122 to server 102 torequest any messages intended for the IMD 122 indicated by the digitalidentification number. In equivalent embodiments, server 102 is aware ofthe relationship between IRM 120 and IMD 122 prior to the connection. Ineither case, any program requests and other messages intended for one ormore IMDs 122 associated with IRM 120 are transferred to IRM 120 overnetwork 114 in any suitable format (e.g. XML, SOAP, etc.). Each of therequests provided (step 306) are processed in turn following receipt byIRM 120. Processing (step 308) suitably involves verifying that thedigital signature or other security information contained within theprogram request uniquely identifies server 102 as the originator of themessage. Processing 308 may also include checking a serial number orother IMD identifier contained within the message against the identifierinformation maintained by IRM 120, and may also include checking thesequential number to ensure that the program request is not beingprocessed out of order, and is only delivered to IMD 122 once. IRM 120may also compare an optional time of creation value contained in themessage to a current time and/or a time of receipt to further improvethe reliability of the message. In such embodiments, IRM 120 mayperiodically or aperiodically synchronize its system clock with server102 using, for example, the network time protocol (NTP) or the like.

Upon successful validation, the validated program request is added todevice queue 128 for subsequent programming in IMD 122. IRM 120 may alsoprovide an indication (e.g. a visual or audio signal) to notify thepatient that the IRM 120 should be synchronized with the patient's IMD122. If IRM 120 is unable to validate the message, a notification isplaced in notification queue 126 to alert server 102 at the nextopportunity.

After all of the received requests are processed (step 306), anycancellations are processed (step 316) by IRM 120. Occasionally, acaregiver may wish to cancel a previously-sent program request, so IRM120 suitably processes such requests after the message requests arereceived. A cancellation request may indicate a particular programrequest (e.g. by sequential number) that should be removed from devicequeue 128, or may indicate that all program requests having sequentialnumbers that precede the sequential number in the cancellation requestshould be removed from device queue 128 and discarded.

After processing the various program requests and other messages, IRM120 optionally provides a status update to server 102 (step 318), andterminates the connection as appropriate. The status update may includea simple count of the number of message correctly received, and/or mayinclude identifiers of each message. This information is provided toserver 102 for storage within database 114 and/or updating of a displayon the caregiver's browser 107.

In various optional embodiments, IRM 120 contains a visual displayand/or audio speaker for providing information directly to the patient.In such embodiments, the patient may be notified (e.g. by a audiosignal, flashing light or the like) that new programming is availablefor IMD 122. IRM 120 may further display information about IMD 122,status information about the transfer process, lists of programsreceived (which may be sorted in any manner, e.g. by time of creation,sequential number, or any other value), and/or any other information asappropriate. Other embodiments of IRM 120 contain only limited feedbackcapabilities (e.g. simple lights or audio signals) or provide nofeedback to the user, as appropriate.

With final reference now to FIG. 4, an exemplary process 400 forconnecting to an IMD 122 from IRM 120 suitably includes the broad stepsof establishing a wireless connection (step 402), verifying that thetransferred messages are valid (step 404), programming the device withthe validated request (step 406), determining the result of theprogramming (steps 408, 410) and placing proper status messages in thenotification queue 126. As noted above, the connection 402 between IRM120 and IMD 122 is typically a wireless connection such as an infrared,radio frequency or similar connection. The connection may be initiatedby placing IRM 120 in proper location with respect to IMD 122 to allowcommunication, by activating a button on IRM 120, and/or by any othertechnique.

For each request in the device queue (step 418), IRM 120 again verifiesthat the request is valid and properly signed by server 102, andoptionally double-checks the IMD identification and/or sequential codecontained in the program request. This verification ensures that therequest was not tampered with, contaminated or otherwise modified whilestored in device queue 128. Alternatively or additionally, step 418 ispartially or entirely performed within IMD 122. Although suchfunctionality may increase the data processing demands on IMD 122,end-to-end cryptography from server 102 to device 122 would furtherenhance the security and reliability of data contained within theprogram request.

In many conventional embodiments, IRM 120 programs IMD 122 usinginformation contained within the program requests as appropriate (step406). Programming in most cases involves simply transferring the programupdate to IMD 122, but may alternately involve additional processing,error checking, confirmation, etc. by IRM 120 and/or IMD 122 as well. Invarious embodiments, IRM 120 and/or IMD 122 verifies that informationcontained within the program request is consistent with the presentstate of IMD 122 before adjusting the operating parameters of IMD 122.For example, the type and/or concentration of a drug present within adrug pump could be verified to ensure that the dosage prescribed withina program request is consistent with the current state of the device,and/or with any other applicable parameters (e.g. maximum or minimumdosage limits, temporal dosage constraints, and/or the like). A singleprogramming request may therefore result in multiple downlinks to IMD122, as transactional information (e.g. drug type or concentration) ispassed between IMD 122 and IRM 120 and/or server 102.

In still further embodiments, IRM 120 and/or IMD 122 may make furthercalculations based upon information that may not have been available tothe caregiver via server 102. Such calculations may determine a propervalue of an operating parameter for IMD 122 based at least in part uponinformation contained in the program request, as well as informationreceived from the IMD. If a drug concentration presently held by aparticular IMD 122 is not known to server 102, for example, variousembodiments of server 102 would allow the caregiver to write theprescription in terms of mass (e.g. milligrams) or other informationthen available. IRM 120 and/or IMD 122 would then determine and programthe proper dosage volume using the drug concentration information (e.g.the number of milligrams of drug per milliliter of fluid) containedwithin the device. If a physician wanted to prescribe two grams ofmorphine, for example, but did not know the exact concentration ofmorphine contained within the patient's implanted drug pump, thephysician could simply prescribe the two grams using browser 117 andserver 102, with IRM 120 and/or IMD 122 determining the exact dosagevolume based upon the concentration contained in the device (e.g. if theconcentration is 2 g/ml, the device would be programmed to deliver a 1ml dose). Similar concepts could be applied to any type of informationor operating parameters relating to any type of IMD 122. Thisfunctionality is optional, however, and may be modified, supplemented oreliminated in other embodiments.

If programming is successful (step 408), a “success” message is placedin notification queue 126 for subsequent forwarding to server 102 (step414). Similarly, a non-successful result may result in a correspondingmessage being placed in notification queue 126 (step 412) to indicatethe occurrence and/or type of error observed. If the error is a simpletelemetry error between the IRM 120 and IMD 122 (step 410), IRM 120 maysimply try programming IMD 122 again until a set number of attempts aremade, until a timeout occurs, or until further attempts are interruptedfor some other reason. The contents of notification queue 126 indicatingsuccess or errors in the programming process are appropriately providedto server 102 upon the next initiation of contact with the server (e.g.process 300).

With general reference again to FIG. 1, various systems and techniquesfor securely and reliably programming an implantable device 122A-E froma conventional browser application 117 have been described. A caregiversuitably authenticates and/or establishes a secure connection with aserver 102 using browser 117. Server 102 authenticates the caregiver,and optionally provides information obtained from one or more IMDs122A-E such as drug type, drug concentration, dosing history, anypreviously-entered notes, and/or the like. Alternatively, if currentinformation (e.g. drug concentration) is not available, the physician isable in some embodiments to request a new program the device based uponavailable information, with IRM 120 and/or device 122 applying missinginformation as needed. If the caregiver does request additionalprogramming that would modify one or more operating parameters of device122A-E, server 102 suitably formats a digital program request thatcontains a digital signature or other credential uniquely identifyingthe server, and that optionally includes additional verificationinformation such as a sequential number, a serial number or otheridentifier for the recipient IMD 122, and/or the like. The informationis provided to a remote monitor 120, which may also be authenticatedand/or contacted via a secure channel for ultimate transmission to IMD122. By applying cryptographic and other secure interlocks betweenbrowser 107, server 102, IRM 122 and/or IMD 122, the security andreliability of program requests can be ensured through even inherentlyunsecure and/or unreliable media such as the Internet. Becausecaregivers are able modify device parameters from a conventionalbrowser, caregivers and patients are no longer required to be present inthe same physical location and at the same time with a deviceprogrammer.

Accordingly, various methods and systems for programming a remote IMDfrom a conventional browser application are provided. While exemplaryembodiments have been presented in the foregoing detailed description ofthe invention, it should be appreciated that a vast number of equivalentvariations exist. While much of the system is described as operating ina “store and forward” manner, for example, similar concepts could beequivalently applied in real-time (or near real-time) to allow acaregiver to program an IMD 122 using a conventional web browser 117. Asa result, the “remote” IRM 120 and/or IMD 122 need not be physicallyremote from the caregiver in all embodiments, but could actually bepresent within the same hospital, clinic, office or other environment.Similarly, server 102 may be implemented on a wide-area basis (e.g.provided by an IMD manufacturer or other provider for intended use bymultiple caregivers), and/or may be implemented on a more localizedbasis, with a particular server 102 supporting those IMDs associatedwith a hospital, clinic, medical practice, geographic area or the like.Indeed, browser 117 and server 102 could equivalently exist within asingle personal computer, network or other host environment, which maybe particularly useful for testing, smaller-scale implementations, andother uses.

It should also be appreciated that these exemplary embodiments are onlyexamples, and are not intended to limit the scope, applicability, orconfiguration of the invention in any way. Rather, the foregoingdetailed description will provide a convenient road map for implementingan exemplary embodiment of the invention. Various changes may be made inthe function and arrangement of elements described in an exemplaryembodiment without departing from the scope of the invention as setforth in the appended claims and their legal equivalents.

1. A method of providing a digital program request formatted by a remotely-located server to an implantable medical device (IMD) having an identifier associated therewith, the digital format request containing a sequential code indicating a desired order in which the digital program request is to be processed, the method comprising the steps of: providing the identifier to the remotely-located server to acquire the digital program request intended for the IMD; validating the digital program request using a digital identification code uniquely identifying the server; in response to successful validation of the digital program request, adding the program request to a storage queue associated with the IMD for subsequent wireless transmission to the IMD; comparing the sequential code contained within the digital program request to a second sequential code earlier processed by the IMD to verify that the digital program request is not processed out-of-order; and storing a result of the validating step in a notification queue for subsequent transmittal to the server.
 2. The method of claim 1 wherein the digital program request is one of a plurality of program requests intended for the IMD, each of the plurality of program requests associated with a sequential code assigned by the server.
 3. The method of claim 2 wherein at least one of the plurality of program requests is a cancellation request having a sequential code that is greater than the sequential code assigned to a previous program request, and wherein the method further comprises the step of canceling the previous program request following successful validation of the cancellation request.
 4. The method of claim 2 wherein the method comprises repeating the validating, adding and storing steps for each of the plurality of program requests.
 5. The method of claim 1 wherein the providing step comprises synchronizing a clock to a system clock present on the server.
 6. The method of claim 1 further comprising the step of determining a proper value of an operating parameter for the IMD based at least in part upon information contained in the program request and information received from the IMD.
 7. The method of claim 1 further comprising the steps of: establishing a wireless connection to the IMD; further validating the program request in the storage queue using the digital identification code uniquely identifying the server and the identifier associated with the IMD; upon successful validation, transferring the program request to the IMD via the wireless connection; and storing the results of the further validation step in the notification queue for subsequent transmittal to the server.
 8. A remote monitoring device comprising a processor and a digital storage medium, the digital storage medium having executable instructions stored thereon that are configured to execute the method of claim
 1. 9. A remote monitoring device for facilitating communication between a server and an implantable medical device (IMD) having an identifier associated therewith, the remote monitoring device comprising: a wireless interface configured to communicate with the IMD; a network interface configured to communicate with the server; and a processor configured to execute a software application adapted to: (i) obtain the identifier from the IMD via the wireless interface, (ii) provide the identifier to the server via the network interface to acquire the digital program request intended for the IMD, (iii) validate a digital identification code uniquely identifying the server contained within the digital program request, (iv) add the validated program request to a storage queue associated with the IMD for subsequent wireless transmission to the IMD via the wireless interface, and (v) store responses to the server in a notification queue for subsequent transmittal to the server via the network interface.
 10. The remote monitoring device of claim 9 wherein the remote monitoring device further comprises a memory configured to store safety parameter data related to the IMD.
 11. The remote monitoring device of claim 10 wherein the program request includes instructions for modifying at least one operating parameter of the IMD, and wherein the software application is further adapted to: (i) compare the instructions included within the digital program request to the stored safety parameter data, and (ii) cancel the instructions if the instructions are inconsistent with the safety parameter data stored on the remote monitoring device.
 12. The remote monitoring device of claim 11 wherein the stored safety parameter data comprises at least one of the group consisting of an allowed dose, an allowed does interval, an allowed activation dose, and an allowed activation does interval.
 13. The remote monitoring device of claim 9 wherein the software application is further adapted to: (i) identify a sequential code indicating a desired order in which the digital program request is to be processed, and (ii) compare the sequential code contained within the digital program request to a second sequential code earlier processed by the remote monitoring device to verify that the digital program request is not processed out-of-order.
 14. The remote monitoring device of claim 9 further comprising: a memory storing plurality of program requests for the IMD each having a sequential code assigned by the server; wherein the software application is further adapted to: (i) determine if one of the plurality of program requests is a cancellation request having a sequential code that is greater than the sequential code assigned to a previous program request, and (ii) cancel the previous program request following successful validation of the cancellation request.
 15. A method of providing a digital program request formatted by a remotely-located server to an implantable medical device (IMD) having an identifier associated therewith, the remotely-located server storing safety parameter data related to the IMD, the digital program request including instructions for modifying at least one operating parameter of the IMD, the method comprising the steps of: providing the identifier to the remotely-located server to acquire the digital program request intended for the IMD; validating the digital program request using a digital identification code uniquely identifying the server; comparing the instructions included within the digital program request to stored safety parameter data stored on the IMD; and adding the program request to a storage queue associated with the IMD for subsequent wireless transmission to the IMD if: (i) the digital program request is successfully validated, and (ii) if the instructions are consistent with the safety parameter data stored on the IMD.
 16. The method of claim 15 wherein the remotely-located server is configured to communicate with a browser application operable by a caregiver, and wherein the method further comprises the step of providing notice to the caregiver via the browser application if the instructions are inconsistent with the stored safety parameter data.
 17. The method of claim 15 wherein the IMD is configured to communicate with the remotely-located server via a monitor (IRM) also storing safety parameter data, and wherein the method further comprises the steps of: comparing the instructions included within the digital program request to the safety parameter data stored on the IRM; and canceling the instructions if the instruction are inconsistent with the safety parameter data stored on the IRM.
 18. The method of claim 15 wherein the safety parameter data stored on the IMD comprises at least one of the group consisting of an allowed dose, an allowed does interval, an allowed activation dose, and an allowed activation does interval. 